package com.xique.door.bean.domain;

import com.xique.common.core.annotation.Excel;
import com.xique.common.datascope.annotation.NeedSetDictParam;
import com.xique.common.datascope.annotation.NeedSetValue;
import com.xique.common.core.web.domain.BaseEntity;
import com.xique.door.mapper.ParkCarMngtypeMapper;
import lombok.Data;

import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.NotNull;
import java.util.Date;

/**
 * 车辆对象 t_park_car
 *
 * @author ww
 * @date 2019-10-26
 */
@Data
public class ParkCar extends BaseEntity
{
    private static final long serialVersionUID = 1L;

    /** 自动增量 */
    @NotNull
    private Long id;

    /** 车场ID */
    @NotNull
//    @Excel(name = "停车场编号" ,cellType = Excel.ColumnType.NUMERIC)
    private Long parkId;

    @Excel(name = "停车场名称(非必填)",type = Excel.Type.EXPORT,prompt = "导入数据的时候，该字段可不填，系统自动去匹配车场")
    private String parkName;

    /** 授权车库，多个车库用英文逗号隔开“,” */
    private String garageIds;

//    @Excel(name = "授权车库")
    private String garageNames;

    /** 授权通道，多个通道用英文逗号隔开“,” */
    private String laneIds;

//    @Excel(name = "授权通道")
    private String laneNames;

    /** 多车多位用 */
    @Excel(name = "车牌号码(必填)",prompt = "1、车牌必填;<br>2、不允许空格;<br>3、字母全部大写;<br>4、多个车牌之间使用','（英文逗号）分割")
    private String bindPlates;

    /** 车位数，默认是0，其他根据实际情况 */
    @Excel(name = "车位数(必填)",cellType = Excel.ColumnType.NUMERIC,prompt = "默认为1，根据实际情况填写")
    private Long spaces;

    /** 车位性质 1-公共车位（计车位） 2-私家车位（不计车位） */
    @Excel(name = "车位性质(必选)",readConverterExp = "1=公共车位,2=私家车位",combo = {"公共车位","私家车位"})
    private String seatType;

    /** 车位号 */
    @Excel(name = "车位号(非必填)",prompt = "公共车位无需填写，私家车位可填")
    private String seatNo;

    /** 状态（normal-启用 pause-暂停） */
    @Excel(name = "状态(必选)", readConverterExp = "normal=启用,pause=停用",combo = {"启用","停用"})
    private String status;

    /** 车牌号 */
//    @NotEmpty
//    @Excel(name = "车牌",prompt = "车牌必填")
    private String plate;

    /** 卡号 */
//    @Excel(name = "卡号")
    private String cardNo;

    /** 车型（1-小车 2-大车 3-超大车 4-摩托车 5-其它车） */
    @NotEmpty
    @Excel(name = "大小车型(必选)", readConverterExp = "1=小车,2=大车,3=超大车,4=摩托车,5=其它车", combo = {"小车","大车","超大车","摩托车","其它车"})
    private String carType;

    @NeedSetDictParam(dictType = "car_type", dictValue = "carType")
//    @Excel(name = "车型", readConverterExp = "1=小车,2=大车,3=超大车,4=摩托车,5=其它车")
    private String carTypeLabel;

    /** 车辆管理类型大类：1、固定车，2、登记临停车，3、邀请访客车，4、会员临停车 */
    @NotEmpty
    @Excel(name = "车辆管理大类(必选)",readConverterExp = "1=月卡类,2=登记临停类,3=邀请访客类,4=会员临停类",combo = {"月卡类","登记临停类","邀请访客类","会员临停类"})
    private String mngType;

    @NeedSetDictParam(dictType = "car_mng_type", dictValue = "mngType")
//    @Excel(name = "车辆管理大类名称")
    private String mngTypeLabel;

    /** 车辆管理类型ID */
    @NotNull
//    @Excel(name = "车辆管理类型编号")
    private Long mngTypeId;

    @NeedSetValue(beanClass = ParkCarMngtypeMapper.class, params = "mngTypeId", method = "selectParkCarMngtypeById",targetFiled = "name")
    @Excel(name = "车辆管理类型名称(必填)")
    private String mngTypeName;

    /** 有效期开始日期 */
//    @Excel(name = "有效期开始日期(必填)", width = 30, dateFormat = "yyyy-MM-dd",prompt = "日期格式：yyyy-MM-dd")
    private Date beginDate;

    /** 有效期截止日期 */
    @Excel(name = "有效期截止日期(必填)", width = 30, dateFormat = "yyyy-MM-dd",prompt = "日期格式：yyyy-MM-dd")
    private Date endDate;

    /** 暂停开始日期 */
//    @Excel(name = "暂停开始日期(非必填)", width = 30, dateFormat = "yyyy-MM-dd")
    private Date pauseBeginDate;

    /** 暂停截止日期 */
//    @Excel(name = "暂停截止日期(非必填)", width = 30, dateFormat = "yyyy-MM-dd")
    private Date pauseEndDate;

    /** 剩余天数 */
//    @Excel(name = "剩余天数(非必填)",prompt = "可不填")
    private Long remainDays;

    @NeedSetDictParam(dictType = "seat_type", dictValue = "seatType")
//    @Excel(name = "车位性质")
    private String seatTypeLabel;

    /** 余额，单位：分 */
//    @Excel(name = "余额(非必填)",prompt = "可不填")
    private Long balance;

    /** 押金，单位：分 */
//    @Excel(name = "押金(非必填)",prompt = "可不填")
    private Long deposit;

    /** 有效次数 */
//    @Excel(name = "有效次数(非必填)",prompt = "可不填")
    private Long effectiveTimes;

    /** 剩余有效次数 */
//    @Excel(name = "剩余有效次数(非必填)",prompt = "可不填")
    private Long remainEffectiveTimes;

    /** 车主姓名 */
    @Excel(name = "姓名(非必填)")
    private String userName;

    /** 车主电话 */
    @Excel(name = "电话(非必填)")
    private String phone;

    /** 地址 */
    @Excel(name = "地址(非必填)")
    private String address;

    /** 微信openId */
//    @Excel(name = "微信openId")
    private String wechatOpenId;

    /** 微信openId有效期开始时间 */
//    @Excel(name = "微信openId有效期开始时间", width = 30, dateFormat = "yyyy-MM-dd")
    private Date wechatBeginDate;

    /** 微信openId有效期截止时间 */
//    @Excel(name = "微信openId有效期截止时间", width = 30, dateFormat = "yyyy-MM-dd")
    private Date wechatEndDate;

    /** 创建人id */
    private Long createUser;

    /** 更新人id */
    private Long updateUser;
    /**
     *
     */
    private String isExpire;
    private String isMultSpaces;

    private int carConts;
    /**1.不允许，2收费访客，3免费访客*/
    private String visitorType;

    private String ids;

    private String visitorPhone;
    private String visitorName;

    private String payType;

    private Date beginDateFee;

    /**应收金额*/
    private Long mayFee;
    /**实收金额*/
    private Long actualFee;

    private Long parkUserId;

    /**
     * 是否储值
     */
    private String isVal;

    /**
     * 是否启用多车库的多位多车功能
     */
    private String isGarageSpace;


}
